"""
    元组 tuple
        元组是一个不可变的序列
        它的操作的方式基本上和列表是一致的
        所有在操作元组时，就把元组当成是一个不可变的列表
        如果希望数据不改变，则使用元组，其余情况都使用列表

    创建元组，使用()来创建元组

    元组的解包（解构）
        解包指就是将元组中每一个元素都赋值给一个变量
        当对一个元组进行解包时，变量的数量必须和元组中元素的数量一致
        也可以在变量前边添加一个*，这样变量就会获取元组中所有剩余的元素

        但不能同时出现两个*
"""

# 创建一个空元组
my_tuple = ()

my_tuple = (1,2,3,4,5)  # 创建一个有五个元素的元组

# 如果元组不是空元祖，它里边至少要有一个
my_tuple = 10,
print(my_tuple)

# 当元组不是空元组时，括号可以省略
my_tuple = 10,20,30,40
print(my_tuple)

# 解包，将元组中的每个元素都赋值给一个变量
a,b,c,d = my_tuple
print(a)
print(b)
print(c)
print(d)

a = 100
b = 300
print('a =',a,', b =',b)

# 交互a和b的值，这时可以使用元组的解包
b,a = a,b
print('a =',a,', b =',b)

# 解包，将元素一一赋值到变量，带有*号的是获取剩余元素的所有元素
a,b,*c = my_tuple
a,*b,c = my_tuple
*a,b,c = my_tuple
print('a =',a,', b =',b,', c =',c)

# 将列表解包拆分赋值
a,b,*c = [1,2,3,4,5,6,7]
print('a =',a,', b =',b,', c =',c)

# 将字符串解包拆分赋值
a,b,*c = 'hello world'
print('a =',a,', b =',b,', c =',c)
